package offer.day12;

public class No17print1ToMaxOfNDigits {
    /*
     * 面试题17：打印从1到最大的n位数
     * 题目：输入数字n,按顺序打印出从1到最大的n位十进制数。
     * 比如输入3，则打印出1，2，3一直到最大的3位数999
     *
     * 思路：考虑大数问题，使用字符串或数组表示
     *
     * */
    public static void main(String[] args) {
        int n=3;
        No17print1ToMaxOfNDigits no17 = new No17print1ToMaxOfNDigits();
        no17.solve(3);
    }

    private void solve(int n){
        if(n<=0) return ;
        char[] number=new char[n];
        for(int i=0;i<10;i++){
            number[0]=(char) (i+'0');
            helper(number,n,0);
        }
    }

    private void helper(char[] number,int n,int index){
        if(index==(n-1)){
            printNumber(number);
            return ;
        }
        for(int i=0;i<10;i++){
            number[index+1]=(char) (i+'0');
            helper(number,n,index+1);
        }
    }

    private void printNumber(char[] number){
        boolean zeroFlag=true;
        for(int i=0;i< number.length;i++){
            if(number[i]!='0'&&zeroFlag==true){
                zeroFlag=false;//非零标识置为0
            }
            if(zeroFlag==false){
                System.out.print(number[i]);
            }
        }
        //换行
        System.out.println();
    }
}
